#pragma once
#include "Material.h"
#include "../Rendering/ConstantBuffers.h"

ref class NormalMappedMaterial : public Material
{
internal:
	NormalMappedMaterial(
		DirectX::XMFLOAT4 meshColor,
		DirectX::XMFLOAT4 diffuseColor,
		DirectX::XMFLOAT4 specularColor,
		float specularExponent,
		float meshColorBlendPercent,
		float specularColorBlendPercent,
		_In_ ID3D11ShaderResourceView* textureResourceView,
		_In_ ID3D11ShaderResourceView* normalMapResourceView,
		_In_ ID3D11VertexShader* vertexShader,
		_In_ ID3D11PixelShader* pixelShader
		);

	virtual void RenderSetup(
		_In_ ID3D11DeviceContext* context,
		_In_ DirectX::XMFLOAT4X4& world,
		_In_ ID3D11Buffer* primitiveConstantBuffer,
		_In_ bool isFirstPass
		) override;

	void SetNormalMapTexture(_In_ ID3D11ShaderResourceView* normalMapResourceView)
	{
		m_normalMapRV = normalMapResourceView;
	}

protected private:
	Microsoft::WRL::ComPtr<ID3D11ShaderResourceView>    m_normalMapRV;
};

